package cn.iocoder.yudao.module.system.controller.admin.wishlist.vo;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 用户志愿表 Response VO
 */
@Schema(description = "管理后台 - 用户志愿表 Response VO")
@Data
@ExcelIgnoreUnannotated
public class UserWishListRespVO {

    @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @ExcelProperty("志愿ID")
    private Long id;

    @Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    private Long userId;

    @Schema(description = "招生省份", example = "北京")
    @ExcelProperty("招生省份")
    private String provinceName;

    @Schema(description = "高校唯一ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "uuid-123")
    private String schoolUuid;

    @Schema(description = "高校名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "北京大学")
    @ExcelProperty("高校名称")
    private String schoolName;

    @Schema(description = "专业名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "计算机科学与技术")
    @ExcelProperty("专业名称")
    private String majorName;

    @Schema(description = "专业代码", example = "080901")
    @ExcelProperty("专业代码")
    private Integer majorCode;

    @Schema(description = "录取年份", requiredMode = Schema.RequiredMode.REQUIRED, example = "2024")
    @ExcelProperty("录取年份")
    private Integer year;

    @Schema(description = "最高分", example = "680")
    @ExcelProperty("最高分")
    private String highScore;

    @Schema(description = "平均分", example = "670")
    @ExcelProperty("平均分")
    private String averageScore;

    @Schema(description = "最低分", example = "660")
    @ExcelProperty("最低分")
    private String lowestScore;

    @Schema(description = "最低位次", example = "1000")
    @ExcelProperty("最低位次")
    private String lowestSection;

    @Schema(description = "录取批次", example = "本科一批")
    @ExcelProperty("录取批次")
    private String batchName;

    @Schema(description = "专业类型", example = "物理类")
    @ExcelProperty("专业类型")
    private String typeName;

    @Schema(description = "专业分数", example = "0")
    @ExcelProperty("专业分数")
    private String proScore;

    @Schema(description = "选科要求", example = "物理+化学")
    @ExcelProperty("选科要求")
    private String subjectSelection;

    @Schema(description = "专业标准代码", example = "0809")
    @ExcelProperty("专业标准代码")
    private String majorStandardCode;

    @Schema(description = "志愿类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "rush")
    @ExcelProperty("志愿类型")
    private String wishType;

    @Schema(description = "志愿顺序（在同类型中的排序）", example = "1")
    @ExcelProperty("志愿顺序")
    private Integer wishOrder;

    @Schema(description = "备注信息", example = "这是我的第一志愿")
    @ExcelProperty("备注信息")
    private String remark;

    @Schema(description = "招生计划信息（JSON格式）", example = "{\"year\":2024,\"enrollmentNumbers\":50}")
    @ExcelProperty("招生计划信息")
    private String enrollmentPlan;

    @Schema(description = "关联的用户成绩记录ID", example = "1")
    @ExcelProperty("成绩记录ID")
    private Long userScoreId;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

    @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("更新时间")
    private LocalDateTime updateTime;

    // ========== 用户基本信息字段 ==========

    @Schema(description = "用户当前省份", example = "北京")
    @ExcelProperty("用户省份")
    private String userProvince;

    @Schema(description = "用户当前总分", example = "650")
    @ExcelProperty("用户总分")
    private Integer userTotalScore;

    @Schema(description = "用户当前选科", example = "物理+化学+生物")
    @ExcelProperty("用户选科")
    private String userSubjectSelection;

    @Schema(description = "用户当前年份", example = "2024")
    @ExcelProperty("用户年份")
    private Integer userYear;

}
